package com.company.剑指offer每日刷题.普通版;

/**
 *
 * 剑指 Offer 53 - II. 0～n-1中缺失的数字
 * 一个长度为n-1的递增排序数组中的所有数字都是唯一的，并且每个数字都在范围0～n-1之内。
 * 在范围0～n-1内的n个数字中有且只有一个数字不在该数组中，请找出这个数字。
 * 示例 1:
 *
 * 输入: [0,1,3]
 * 输出: 2
 * 示例 2:
 *
 * 输入: [0,1,2,3,4,5,6,7,9]
 * 输出: 8
 *
 *
 * 限制：
 *
 * 1 <= 数组长度 <= 10000
 * */
public class MissingNumber {

    public static void main(String[] args) {

    }

    /**
     * 方法1：循环遍历法
     * 思路：从题意中得知，完整的数组范围应该是0~n-1中的所有数字，那我们直接判断每个元素的下标是否不等于这个元素，那这个元素就缺失的，
     *  但是还有一个特例，就是0~n-1中的所有元素，都能在nums中找到，那么不包含的元素应该是nums末端元素的值加1
     *
     *  时间复杂度：O(n)
     * */
    public int missingNumber(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            if(i != nums[i]){
                return i;
            }
        }
        return nums.length ;
    }


    /**
     * 方法2：二分查找
     * 思路：0 1 2 3 4 5 7 8 9
     * */
    public int missingNumber1(int[] nums) {
        return 0;
    }
}
